home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
JCSM Shareware Collection 1996 September
/
JCSM Shareware Collection (JCS Distribution) (September 1996).ISO
/
prgtools
/
apm3212c.zip
/
APM1.BAS
< prev
next >
Wrap
BASIC Source File
|
1996-08-25
|
73KB
|
2,141 lines
Attribute VB_Name = "Module1"
Option Explicit
Option Base 1
Global frm1 As New apm1 ' instantiate forms
Global frm2 As New apm2
Global frm3 As New apm3
Global AuthorFileIn As Integer ' current status
' 0=unopened
' 1=opened, does not exist
' 2=opened, updated
Global ProgFileIn ' 0=unopened
' 1=New, prog name established
' 2=Prog file Read
Global Classes(200) As String ' place to build/store 'em
Global NumClasses As Integer ' remember how many
Global ClassLevel As Integer ' highest class level
' available - use as
' default for new programs
Type AuthRecType
ALink As Long ' Link
AUpdateDate As Date ' date of maintenance
AUpDateReason As String * 20 ' reason for update
AFirstName As String * 20 ' first name
ALastName As String * 20 ' last name
ACompany As String * 30 ' company
AAddress1 As String * 30 ' address 1
AAddress2 As String * 30 ' address 2
ACity As String * 20 ' city
AState As String * 2 ' state
AZip As String * 15 ' zip
ACountry As String * 20 ' country
ACountryCode As String * 1 ' country code
' U = US
' C = Canada
' O = Other
ATelephone As String * 20 ' telephone
AFax As String * 20 ' fax
ABBS As String * 20 ' BBS
ACIS As String * 20 ' CIS Number
AINetEMail As String * 50 ' internet EMail
AURL As String * 80 ' URL
AASP As Boolean ' ASP?
ASTAR As Boolean ' STAR?
AESC As Boolean ' ESC?
AORG4 As Boolean ' not used
AORG5 As Boolean ' not used
ABestApprove As Boolean ' best of the A2V ok?
AAprovDate As Date ' date approved
AAprovComt As String * 20 ' approval comment
End Type
Global AData As AuthRecType ' make record for author
Type ProgRecType
PLink As Long ' must match ALink
PClassLevel As Integer ' Remember the class rev
' level under which this prog
' file created
PProg As String * 8 ' Program (Master key & file name)
PMaintType As String * 1 ' type of revision
' A=Add
' M=Maintain (Description and may substitute
' Zips)
' U=Update (Description, new Rev#,
' must have and NEW Zips!)
' D=Delete
PMaintDate As Date ' date of this revision
PMaintComt As String * 20 ' reason
PShortDesc As String * 20 ' short desc
PMedDesc As String * 40 ' med desc
PVersion As String * 10 ' prog version
POrigDate As Date ' orig release
PCurRelease As Date ' cur release date
PZip1 As String * 8 ' name of zip1
PZip2 As String * 8 ' name of zip2
PZip3 As String * 8 ' name of zip3
PZip4 As String * 8 ' name of zip4
PZip5 As String * 8 ' name of zip5
PZip6 As String * 8 ' name of zip6
PVend1 As String * 8 ' name of vend1
PVend2 As String * 8 ' name of vend2
PVend3 As String * 8 ' name of vend3
PVend4 As String * 8 ' name of vend4
PVend5 As String * 8 ' name of vend5
PVend6 As String * 8 ' name of vend6
PScreen As String * 8 ' name of screen file
PSize1 As Single ' full size of zip1
PSize2 As Single ' full size of zip2
PSize3 As Single ' full size of zip3
PSize4 As Single ' full size of zip4
PSize5 As Single ' full size of zip5
PSize6 As Single ' full size of zip6
PScrSize As Single ' full size of screen file
PTextEnv As String * 15 ' text environment
PEnvDOS As Boolean ' DOS Env
PEnvWin As Boolean ' Win Env
PEnvWin95 As Boolean ' W95 Env
PEnvOS2 As Boolean ' OS2 Env
PEnvOther As Boolean ' Other Env
PClass1 As Integer ' index in class table
PClass2 As Integer ' index in class table
PClass3 As Integer ' index in class table
PClass4 As Integer ' index in class table
PMemReq As Single ' memory required
PHdReq As Boolean ' hard disk required?
PHdReqInM As Single ' hard disk in Mb
PFileIdDiz(10) As String ' up to 10 lines
PFileIdDizLns As Integer ' count of lines
PLongDesc(150) As String ' up to 150 lines
PLongDescLns As Integer ' count of lines
PKeyWords(150) As String ' up to 150 lines
PKeyWordsLns As Integer ' count of lines
PReg(150) As String ' up to 150 lines
PRegLns As Integer ' count of lines
PInstall(150) As String ' up to 150 lines
PInstallLns As Integer ' count of lines
PVinst(150) As String ' up to 150 lines
PVinstLns As Integer ' count of lines
PPermiss(150) As String ' up to 150 lines
PPermissLns As Integer ' count of lines
End Type
Global PData As ProgRecType ' make record for program
Global ProgsInDir(200) As String ' array of programs available
Global ProgsIDCnt ' count of progs
'
' subroutine to break out up to 150 lines of memo into
' lines no longer than N characters
'
Public Sub BreakOutMemo(ByRef mem As String, _
ByRef lns() As String, _
ByRef lncnt As Integer, _
ByRef llen As Integer)
Dim tmplin As String
Dim i As Integer
Dim j As Integer
Dim stopit As Boolean
tmplin = ""
If Len(mem) = 0 Then
lns(1) = ""
lncnt = 0
Else
lncnt = 0 ' initialize
tmplin = ""
For i = 1 To UBound(lns, 1)
lns(i) = ""
Next i
For i = 1 To Len(mem)
If Mid(mem, i, 1) = Chr$(10) Then ' line feed?
If Len(tmplin) <> 0 Then
GoSub takeline
Else
lncnt = lncnt + 1
lns(lncnt) = ""
End If
ElseIf Mid(mem, i, 1) = Chr$(13) Then ' char return?
'
Else
tmplin = tmplin + Mid(mem, i, 1) ' build temporary line
End If
Next i
End If
If Len(tmplin) <> 0 Then
GoSub takeline
End If
GoTo endsub
takeline:
While Len(tmplin) > llen
j = llen
stopit = False
While stopit = False
If Mid(tmplin, j, 1) = " " Then
lncnt = lncnt + 1
lns(lncnt) = Mid(tmplin, 1, j - 1)
tmplin = Mid(tmplin, j + 1, Len(tmplin) - j)
stopit = True
Else
If j > 1 Then
j = j - 1
Else
lncnt = lncnt + 1
lns(lncnt) = Mid(tmplin, 1, llen)
tmplin = Mid(tmplin, llen + 1, Len(tmplin) - llen)
stopit = True
End If
End If
Wend
Wend
lncnt = lncnt + 1
lns(lncnt) = tmplin
tmplin = ""
Return
endsub: ' artificial end of sub point
End Sub
'
' subroutine to reformat up to 150 lines of memo into
' lines no longer than N characters
' more than single carriage return/line feed pairs
' are preserved. Other lines are combined, then broken into lines
' no longer than llen.
'
Public Sub ReformatMemo(ByRef mem As String, _
ByRef memback As String, _
ByRef llen As Integer)
Dim i As Integer
Dim prev_char As String
Dim had_one As Boolean
Dim had_two As Boolean
Dim stopit As Boolean
had_one = False ' no line feed yet
had_two = False ' no line feed yet
memback = ""
For i = 1 To Len(mem)
If Mid(mem, i, 1) = Chr$(10) Then ' line feed?
If had_one = False Then
had_one = True
had_two = False
ElseIf had_two = False Then
had_two = True
memback = memback + Chr$(13) + Chr$(10) + Chr$(13) + Chr$(10)
Else
memback = memback + Chr$(13) + Chr$(10)
End If
ElseIf Mid(mem, i, 1) = Chr$(13) Then ' char return?
'
Else
If had_one = True And _
had_two = False And _
prev_char <> " " And _
Mid(mem, i, 1) <> " " Then
memback = memback + " " ' plug space
End If
had_one = False
had_two = False
memback = memback + Mid(mem, i, 1) ' build temporary line
prev_char = Mid(mem, i, 1) ' save it
End If
Next i
End Sub
'
' build classes based on level # input
'
' set global variable ClassLevel to highest
' default level accieved below then
' use that value for defaults for new programs
'
Public Sub BuildClasses(lev As Integer, _
cnt As Integer)
Dim i As Integer
If lev = 1 Then
i = 1
Classes(i) = " 0 (None)"
i = i + 1
Classes(i) = " 200 Accounting/Financial"
i = i + 1
Classes(i) = " 300 Artificial Intell."
i = i + 1
Classes(i) = " 400 BBS Systems"
i = i + 1
' Classes(i) = " 600 Business" ' note group item
' i = i + 1
' Classes(i) = " 610 Available" ' note dummy item
' i = i + 1
Classes(i) = " 620 Business-Order/Bill/Acct"
i = i + 1
Classes(i) = " 630 Business-Payroll"
i = i + 1
Classes(i) = " 640 Business-Mkting/Sales"
i = i + 1
Classes(i) = " 650 Business-Barcodes/ZipCodes"
i = i + 1
Classes(i) = " 660 Business-PIMS/Contact/Lists"
i = i + 1
Classes(i) = " 670 Business -Programs"
i = i + 1
Classes(i) = " 680 Business-Utilities"
i = i + 1
Classes(i) = " 690 Business-Other"
i = i + 1
Classes(i) = " 800 Calculators"
i = i + 1
Classes(i) = "1000 Cataloging"
i = i + 1
Classes(i) = "1200 Communications"
i = i + 1
Classes(i) = "1400 Databases-Applicatns"
i = i + 1
Classes(i) = "1600 DataBases-Full Feat."
i = i + 1
Classes(i) = "1800 Databases-Other"
i = i + 1
Classes(i) = "2000 DeskTop Publishing"
i = i + 1
Classes(i) = "2200 Drivers"
i = i + 1
Classes(i) = "2400 Editors"
i = i + 1
' Classes(i) = "2600 Educational" ' note group
' i = i + 1
Classes(i) = "2610 Educational-Teacher Tools"
i = i + 1
Classes(i) = "2620 Educational-Tutorials"
i = i + 1
Classes(i) = "2630 Educational-Games"
i = i + 1
Classes(i) = "2640 Educational-Kids 3-8"
i = i + 1
Classes(i) = "2650 Educational-College"
i = i + 1
' Classes(i) = "2660 Educational-Available"
' i = i + 1
' Classes(i) = "2670 Educational-Available"
' i = i + 1
Classes(i) = "2680 Educational-Utilities"
i = i + 1
Classes(i) = "2690 Educational-Other"
i = i + 1
Classes(i) = "2700 Elec.Books-Perdcals"
i = i + 1
Classes(i) = "2800 Financial"
i = i + 1
Classes(i) = "3000 Fonts"
i = i + 1
' Classes(i) = "3010 Games Publishers"
' i = i + 1
Classes(i) = "3011 MVP Software"
i = i + 1
Classes(i) = "3012 ID Software"
i = i + 1
Classes(i) = "3013 Apogee Software"
i = i + 1
Classes(i) = "3014 Soleau Software"
i = i + 1
Classes(i) = "3100 Game-Action"
i = i + 1
Classes(i) = "3200 Game-Adventure"
i = i + 1
Classes(i) = "3400 Game-Arcade"
i = i + 1
Classes(i) = "3600 Game-Board"
i = i + 1
Classes(i) = "3800 Game-Card"
i = i + 1
Classes(i) = "3900 Game-Casino"
i = i + 1
Classes(i) = "4000 Game-Graphic"
i = i + 1
Classes(i) = "4200 Game-Hints/Unprots"
i = i + 1
Classes(i) = "4400 Game-Simulator"
i = i + 1
Classes(i) = "4500 Game-Super VGA"
i = i + 1
Classes(i) = "4600 Game-Other"
i = i + 1
Classes(i) = "4800 Genealogy"
i = i + 1
Classes(i) = "5000 Graphics-CAD"
i = i + 1
Classes(i) = "5200 Graphics-Images"
i = i + 1
Classes(i) = "5400 Graphics-Programs"
i = i + 1
Classes(i) = "5600 Help Systems"
i = i + 1
Classes(i) = "5700 Hobbies"
i = i + 1
' Classes(i) = "5800 Home/Personal"
' i = i + 1
Classes(i) = "5810 Home/Pers.-Accting/Business"
i = i + 1
Classes(i) = "5820 Home/Pers.-Org/PIMS/Calendars/Lists"
i = i + 1
Classes(i) = "5830 Home/Pers.-Astrology"
i = i + 1
Classes(i) = "5840 Home/Pers.-Sporting"
i = i + 1
Classes(i) = "5850 Home/Pers.-Health/Cooking/Recipes"
i = i + 1
Classes(i) = "5860 Home/Pers.-Stocks/Bonds"
i = i + 1
' Classes(i) = "5870 Home/Pers.-Available"
' i = i + 1
Classes(i) = "5880 Home/Pers.-Utilities"
i = i + 1
Classes(i) = "5890 Home/Pers.-Other"
i = i + 1
Classes(i) = "6000 Humor"
i = i + 1
Classes(i) = "6100 Internet"
i = i + 1
Classes(i) = "6200 Icons"
i = i + 1
Classes(i) = "6300 Marketing Aids"
i = i + 1
Classes(i) = "6400 Legal"
i = i + 1
Classes(i) = "6500 Lotto Programs"
i = i + 1
Classes(i) = "6600 Medical/Health"
i = i + 1
Classes(i) = "6800 Music"
i = i + 1
Classes(i) = "7000 Productivity"
i = i + 1
Classes(i) = "7200 Progmer's Tools/Libs"
i = i + 1
Classes(i) = "7400 Religious"
i = i + 1
Classes(i) = "7600 Science/Math"
i = i + 1
Classes(i) = "7700 Sports"
i = i + 1
Classes(i) = "7800 Spreadsheets/Templts"
i = i + 1
Classes(i) = "8000 Speech"
i = i + 1
' Classes(i) = "8200 Utilities"
' i = i + 1
Classes(i) = "8210 Utilities-Printing"
i = i + 1
Classes(i) = "8220 Utilities-Screen Savers"
i = i + 1
Classes(i) = "8230 Utilities-File"
i = i + 1
Classes(i) = "8240 Utilities-Menues"
i = i + 1
Classes(i) = "8250 Utilities-Screen"
i = i + 1
Classes(i) = "8260 Utilities-Communications"
i = i + 1
Classes(i) = "8270 Utilities-Sound"
i = i + 1
' Classes(i) = "8280 Utilities-Available"
' i = i + 1
Classes(i) = "8290 Utilities-Other"
i = i + 1
Classes(i) = "8400 Virus Protection"
i = i + 1
Classes(i) = "8600 Word Processors"
i = i + 1
Classes(i) = "8800 Writing Aids"
i = i + 1
Classes(i) = "9800 Other"
cnt = i
Else
MsgBox ("Building classes - level not supported")
End
End If
End Sub
Public Sub ClearProgArea()
Dim i As Integer
Dim looper As Boolean
Dim CurDirEntry As String
ProgFileIn = 0 ' must do something before saving
' program must be established somehow
' either by keying, or by getting file
' by reading
PData.PLink = AData.ALink ' must match ALink
PData.PClassLevel = ClassLevel ' Remember the class rev
' level under which this prog
' file created
PData.PProg = Space(8) ' Program (Master key & file name)
PData.PMaintType = "A" ' Set for Add if new
frm3.apm3RevAdd = True ' set screen
frm3.apm3RevMaint = False
frm3.apm3RevUpdate = False
frm3.apm3RevDelete = False
PData.PMaintDate = CDate("1/1/1970") ' date of this revision
frm3.apm3PRevDate = ""
PData.PMaintComt = Space(20) ' maint comment
frm3.apm3PRevReason = ""
PData.PShortDesc = Space(20) ' short desc
frm3.apm3PShtDesc = ""
PData.PMedDesc = Space(40) ' med desc
frm3.apm3PMedDesc = ""
PData.PVersion = Space(10) ' prog version
frm3.apm3PVer = ""
PData.POrigDate = CDate("1/1/1970") ' orig release
frm3.apm3PODate = ""
PData.PCurRelease = CDate("1/1/1970") ' cur release date
frm3.apm3PCDate = ""
PData.PZip1 = Space(8) ' name of zip1
frm3.apm3PZip1 = ""
PData.PZip2 = Space(8) ' name of zip2
frm3.apm3PZip2 = ""
PData.PZip3 = Space(8) ' name of zip3
frm3.apm3PZip3 = ""
PData.PZip4 = Space(8) ' name of zip4
frm3.apm3PZip4 = ""
PData.PZip5 = Space(8) ' name of zip5
frm3.apm3PZip5 = ""
PData.PZip6 = Space(8) ' name of zip6
frm3.apm3PZip6 = ""
PData.PVend1 = Space(8) ' name of vend1
frm3.apm3PVend1 = ""
PData.PVend2 = Space(8) ' name of vend2
frm3.apm3PVend2 = ""
PData.PVend3 = Space(8) ' name of vend3
frm3.apm3PVend3 = ""
PData.PVend4 = Space(8) ' name of vend4
frm3.apm3PVend4 = ""
PData.PVend5 = Space(8) ' name of vend5
frm3.apm3PVend5 = ""
PData.PVend6 = Space(8) ' name of vend6
frm3.apm3PVend6 = ""
PData.PScreen = Space(8) ' name of screen file
frm3.apm3PScreen = ""
PData.PSize1 = 0 ' full size of zip1
frm3.apm3PSize1 = ""
PData.PSize2 = 0 ' full size of zip2
frm3.apm3PSize2 = ""
PData.PSize3 = 0 ' full size of zip3
frm3.apm3PSize3 = ""
PData.PSize4 = 0 ' full size of zip4
frm3.apm3PSize4 = ""
PData.PSize5 = 0 ' full size of zip5
frm3.apm3PSize5 = ""
PData.PSize6 = 0 ' full size of zip6
frm3.apm3PSize6 = ""
PData.PScrSize = 0 ' full size of screen file
frm3.apm3PScreenSize = ""
PData.PTextEnv = Space(15) ' text environment
frm3.apm3PEnvText = ""
PData.PEnvDOS = False ' DOS Env
frm3.apm3PEDOS = False
PData.PEnvWin = False ' Win Env
frm3.apm3PEWin = False
PData.PEnvWin95 = False ' W95 Env
frm3.apm3PEWin95 = False
PData.PEnvOS2 = False ' OS2 Env
frm3.apm3PEOS2 = False
PData.PEnvOther = False ' Other Env
frm3.apm3PEOther = False
PData.PClass1 = 0 ' index in class table
frm3.apm3Class1.ListIndex = 0
PData.PClass2 = 0 ' index in class table
frm3.apm3Class2.ListIndex = 0
PData.PClass3 = 0 ' index in class table
frm3.apm3Class3.ListIndex = 0
PData.PClass4 = 0 ' index in class table
frm3.apm3Class4.ListIndex = 0
PData.PMemReq = 0 ' memory required
frm3.apm3PMem = ""
PData.PHdReq = False ' hard disk required?
frm3.apm3PHDReq = False
PData.PHdReqInM = 0 ' hard disk in Mb
frm3.apm3PHDSize = ""
For i = 1 To 10
PData.PFileIdDiz(i) = "" ' 10 lines
Next i
PData.PFileIdDizLns = 0 ' count of lines
frm3.apm3PFileidDiz.Text = ""
For i = 1 To 150
PData.PLongDesc(i) = "" ' 150 lines
Next i
PData.PLongDescLns = 0 ' count of lines
frm3.apm3PLongDesc.Text = ""
For i = 1 To 150
PData.PKeyWords(i) = "" ' 150 lines
Next i
PData.PKeyWordsLns = 0 ' count of lines
frm3.apm3PKeywords.Text = ""
For i = 1 To 150
PData.PReg(i) = "" ' 150 lines
Next i
PData.PRegLns = 0 ' count of lines
frm3.apm3PRegistration.Text = ""
For i = 1 To 150
PData.PInstall(i) = "" ' 150 lines
Next i
PData.PInstallLns = 0 ' count of lines
frm3.apm3PInstall.Text = ""
For i = 1 To 150
PData.PVinst(i) = "" ' 150 lines
Next i
PData.PVinstLns = 0 ' count of lines
frm3.apm3PVInst.Text = ""
For i = 1 To 150
PData.PPermiss(i) = "" ' 150 lines
Next i
PData.PPermissLns = 0 ' count of lines
frm3.apm3PPermiss.Text = ""
For i = 1 To 200 ' get available program files
ProgsInDir(200) = ""
Next i
ProgsIDCnt = 0 ' count of progs
CurDirEntry = Dir("*.jcs", vbNormal)
If CurDirEntry <> "" Then ' no .jcs files
' dir return is xxxx.jcs; drop the .jcs
CurDirEntry = Trim(UCase(Left(CurDirEntry, Len(CurDirEntry) - 4)))
If CurDirEntry <> "AUTHOR" Then
ProgsIDCnt = ProgsIDCnt + 1
ProgsInDir(ProgsIDCnt) = CurDirEntry
End If
looper = True
While looper = True
CurDirEntry = Dir()
If CurDirEntry = "" Then
looper = False
Else
CurDirEntry = Trim(UCase(Left(CurDirEntry, Len(CurDirEntry) - 4)))
If CurDirEntry <> "AUTHOR" Then
ProgsIDCnt = ProgsIDCnt + 1
ProgsInDir(ProgsIDCnt) = CurDirEntry
End If
End If
Wend
End If
' now set screen
frm3.apm3AuthNumber = Right(" " + Str(PData.PLink), 5)
frm3.apm3AuthName = ""
If Trim(AData.AFirstName) <> "" Then
frm3.apm3AuthName = frm3.apm3AuthName + Trim(AData.AFirstName) + " "
End If
If Trim(AData.ALastName) <> "" Then
frm3.apm3AuthName = frm3.apm3AuthName + Trim(AData.ALastName)
End If
If Trim(AData.ACompany) <> "" Then
frm3.apm3AuthName = Left(frm3.apm3AuthName + "/" + Trim(AData.ACompany), 40)
End If
frm3.apm3Prog.Clear ' clear program items list
If ProgsIDCnt > 0 Then
For i = 1 To ProgsIDCnt
frm3.apm3Prog.AddItem ProgsInDir(i)
Next i
frm3.apm3Prog.Text = ProgsInDir(1)
End If
frm3.apm3RevAdd = True ' set screen
frm3.apm3RevMaint = False
frm3.apm3RevUpdate = False
frm3.apm3RevDelete = False
frm3.apm3PRevDate = "" ' no entry to start
frm3.apm3PRevReason = ""
End Sub
'
'
' this subroutine reads the author.jcs
' file, puts it in the author fields
' and prepares it for display
'
Public Sub GetAuthorFile()
Dim auth_lun As Integer ' logical lun for author file
Dim name As String
Dim value As String
Dim mm As String
Dim dd As String
Dim yy As String
AuthorFileIn = 0 ' initialize as not yet gotten
AData.ALink = 0 ' initialize fields
frm2.apm2ANumber = "(Not Valid)"
AData.AUpdateDate = CDate("1/1/70")
frm2.apm2AIDate = ""
AData.AUpDateReason = Space(20)
frm2.apm2AUReason = ""
AData.AFirstName = Space(20)
frm2.apm2AFirstName = ""
AData.ALastName = Space(20)
frm2.apm2ALastName = ""
AData.ACompany = Space(30)
frm2.apm2ACompany = ""
AData.AAddress1 = Space(30)
frm2.apm2AAddr1 = ""
AData.AAddress2 = Space(30)
frm2.apm2AAddr2 = ""
AData.ACity = Space(20)
frm2.apm2ACity = ""
AData.AState = " "
frm2.apm2AState = ""
AData.AZip = Space(15)
frm2.apm2AZip = ""
AData.ACountry = Space(20)
frm2.apm2ACountry = ""
AData.ACountryCode = " "
frm2.apm2ACountryCode = ""
AData.ATelephone = Space(20)
frm2.apm2ATelephone = ""
AData.AFax = Space(20)
frm2.apm2AFax = ""
AData.ABBS = Space(20)
frm2.apm2ABBS = ""
AData.ACIS = Space(20)
frm2.apm2ACIS = ""
AData.AINetEMail = Space(50)
frm2.apm2AIEMail = ""
AData.AURL = Space(80)
frm2.apm2AURL = ""
AData.ABestApprove = False
frm2.apm2ABestApp = Unchecked
AData.AASP = False
frm2.apm2AASP = Unchecked
AData.ASTAR = False
frm2.apm2ASTAR = Unchecked
AData.AESC = False
frm2.apm2AESC = Unchecked
AData.AORG4 = False
frm2.apm2AORG4 = Unchecked
AData.AORG5 = False
frm2.apm2AORG5 = Unchecked
AData.AAprovDate = CDate("1/1/70")
frm2.apm2ABestAppDate = ""
AData.AAprovComt = Space(20)
frm2.apm2ABestAppCmt = ""
If Dir(CurDir + "\author.jcs") <> "" Then ' exists
auth_lun = FreeFile(0) ' get lun
Open ".\author.jcs" For Input As auth_lun
While (Not EOF(auth_lun))
Call GetNameValue(auth_lun, name, value)
name = Trim(UCase(name))
If name = "LINK" Then
AData.ALink = CLng(value) ' initialize fields
frm2.apm2ANumber = Right(" " + value, 5)
ElseIf name = "UPDATEDATE" Then
If IsDate(value) And value <> "1/1/1970" Then
AData.AUpdateDate = CDate(value)
frm2.apm2AIDate = Trim(Str(Month(AData.AUpdateDate))) _
+ "/" _
+ Trim(Str(Day(AData.AUpdateDate))) _
+ "/" _
+ Trim(Str(Year(AData.AUpdateDate)))
Else
AData.AUpdateDate = CDate("1/1/70")
frm2.apm2AIDate = ""
End If
ElseIf name = "UPDATEREASON" Then
AData.AUpDateReason = value
frm2.apm2AUReason = Trim(value)
ElseIf name = "FIRSTNAME" Then
AData.AFirstName = value
frm2.apm2AFirstName = Trim(value)
ElseIf name = "LASTNAME" Then
AData.ALastName = value
frm2.apm2ALastName = Trim(value)
ElseIf name = "COMPANY" Then
AData.ACompany = value
frm2.apm2ACompany = Trim(value)
ElseIf name = "ADDRESS1" Then
AData.AAddress1 = value
frm2.apm2AAddr1 = Trim(value)
ElseIf name = "ADDRESS2" Then
AData.AAddress2 = value
frm2.apm2AAddr2 = Trim(value)
ElseIf name = "CITY" Then
AData.ACity = value
frm2.apm2ACity = Trim(value)
ElseIf name = "STATE" Then
AData.AState = value
frm2.apm2AState = Trim(value)
ElseIf name = "ZIP" Then
AData.AZip = value
frm2.apm2AZip = Trim(value)
ElseIf name = "COUNTRY" Then
AData.ACountry = value
frm2.apm2ACountry = Trim(value)
ElseIf name = "COUNTRYCODE" Then
AData.ACountryCode = value
frm2.apm2ACountryCode = Trim(value)
ElseIf name = "TELEPHONE" Then
AData.ATelephone = value
frm2.apm2ATelephone = Trim(value)
ElseIf name = "FAX" Then
AData.AFax = value
frm2.apm2AFax = Trim(value)
ElseIf name = "BBS" Then
AData.ABBS = value
frm2.apm2ABBS = Trim(value)
ElseIf name = "CIS" Then
AData.ACIS = value
frm2.apm2ACIS = Trim(value)
ElseIf name = "EMAIL" Then
AData.AINetEMail = value
frm2.apm2AIEMail = Trim(value)
ElseIf name = "URL" Then
AData.AURL = value
frm2.apm2AURL = Trim(value)
ElseIf name = "ASP" Then
If value = "T" Then
AData.AASP = True
frm2.apm2AASP = Checked
Else
AData.AASP = False
frm2.apm2AASP = Unchecked
End If
ElseIf name = "STAR" Then
If value = "T" Then
AData.ASTAR = True
frm2.apm2ASTAR = Checked
Else
AData.ASTAR = False
frm2.apm2ASTAR = Unchecked
End If
ElseIf name = "ESC" Then
If value = "T" Then
AData.AESC = True
frm2.apm2AESC = Checked
Else
AData.AESC = False
frm2.apm2AESC = Unchecked
End If
ElseIf name = "ORG4" Then
If value = "T" Then
AData.AORG4 = True
frm2.apm2AORG4 = Checked
Else
AData.AORG4 = False
frm2.apm2AORG4 = Unchecked
End If
ElseIf name = "ORG5" Then
If value = "T" Then
AData.AORG5 = True
frm2.apm2AORG5 = Checked
Else
AData.AORG5 = False
frm2.apm2AORG5 = Unchecked
End If
ElseIf name = "BESTAPPROVE" Then
If value = "T" Then
AData.ABestApprove = True
frm2.apm2ABestApp = Checked
Else
AData.ABestApprove = False
frm2.apm2ABestApp = Unchecked
End If
ElseIf name = "APROVDATE" Then
If IsDate(value) And value <> "1/1/1970" Then
AData.AAprovDate = CDate(value)
frm2.apm2ABestAppDate = Trim(Str(Month(AData.AAprovDate))) _
+ "/" _
+ Trim(Str(Day(AData.AAprovDate))) _
+ "/" _
+ Trim(Str(Year(AData.AAprovDate)))
Else
AData.AAprovDate = CDate("1/1/70")
frm2.apm2ABestAppDate = ""
End If
ElseIf name = "APROVCOMT" Then
AData.AAprovComt = value
frm2.apm2ABestAppCmt = Trim(value)
Else
MsgBox ("Invalid field in Author file - " + name + " - ignored")
End If
Wend
Close (auth_lun) ' done with it for now
AuthorFileIn = 2 ' successfully read
Else ' file not found
AuthorFileIn = 1 ' tried-not yet exist
End If
End Sub
'
' get line from file, and separate it into it's
' name and value components
'
Sub GetNameValue(ln As Integer, _
nm As String, _
st As String)
Dim tmp As String ' read it here
Dim i As Integer
Dim stg As Integer ' processing sw
' 0=nothing yet
' 1=1st quote in name
' 2=name finished, value not started
' 3=value started
' 4=value finished
Line Input #ln, tmp ' get the line
nm = ""
st = ""
stg = 0 ' init stage
For i = 1 To Len(tmp)
If Mid(tmp, i, 1) = Chr(34) Then ' is quote
If stg < 4 Then
stg = stg + 1
If stg = 4 And i < Len(tmp) Then
st = st + Mid(tmp, i, 1) ' put in quote
stg = stg - 1
End If
Else
MsgBox ("invalid quote in name/value - ignored")
End If
Else
If stg = 0 Then
MsgBox ("invalid character in name/value - ignored")
ElseIf stg = 2 And Mid(tmp, i, 1) <> "," Then
MsgBox ("invalid character in name/value - ignored")
ElseIf stg = 2 And Mid(tmp, i, 1) = "," Then
' go around the central comma
Else
If stg = 1 Then
nm = nm + Mid(tmp, i, 1)
ElseIf stg = 3 Then
st = st + Mid(tmp, i, 1)
Else
MsgBox ("invalid character in name/value - ignored")
End If
End If
End If
Next i
End Sub
'
' this subroutine gets the named program file
' clears the screen areas, and loads the program file into
' the screen areas as applicable.
'
'
Public Sub GetProgFile(PFileName As String)
Dim i As Integer ' work subscript
Dim j As Integer ' work subscript
Dim k As Integer ' work subscript
Dim wkint1 As Integer ' for conversions
Dim wkint2 As Integer ' for conversions
Dim clsptr As Integer ' for conversions
Dim looper As Boolean ' ctl loops
Dim prog_lun As Integer ' logical lun for author file
Dim name As String
Dim value As String
Dim mm As String
Dim dd As String
Dim yy As String
If Trim(PFileName) = "" Then ' does not exist
' accept cleared
' params
Call ClearProgArea
PData.PProg = PFileName ' Program (Master key & file name)
frm3.apm3Prog.Text = PFileName
If Trim(frm3.apm3Prog.Text) = "" Then
ProgFileIn = 0
Else
ProgFileIn = 1
End If
ElseIf Dir(CurDir + "\" + Trim(PFileName) + ".jcs") = "" Then
' accept cleared
' params
Call ClearProgArea
PData.PProg = PFileName ' Program (Master key & file name)
frm3.apm3Prog.Text = PFileName
If Trim(frm3.apm3Prog.Text) = "" Then
ProgFileIn = 0
Else
ProgFileIn = 1
End If
Else ' otherwise gotta get the file stuff
prog_lun = FreeFile(0) ' get lun
Open ".\" + Trim(PFileName) + ".jcs" For Input As prog_lun
ProgFileIn = 2 ' we have read it
While (Not EOF(prog_lun))
Call GetNameValue(prog_lun, name, value)
name = Trim(UCase(name))
If name = "PLINK" Then
PData.PLink = AData.ALink ' initialize fields
frm3.apm3AuthNumber = PData.PLink
' PData.PLink = CLng(value) ' initialize fields
' frm3.apm3AuthNumber = Right(" " + value, 5)
ElseIf name = "CLASSLEVEL" Then
PData.PClassLevel = CInt(value)
' here do any conversion things necessary
ElseIf name = "PROGRAM" Then
PData.PProg = Trim(value) ' Program (Master key & file name)
apm3.apm3Prog = Trim(value)
ElseIf name = "MAINTTYPE" Then
' ignore these, as they will be set later
ElseIf name = "MAINTDATE" Then
' ignore these, as they will be set later
ElseIf name = "MAINTCOMMENT" Then
' ignore these, as they will be set later
ElseIf name = "SHORTDESC" Then
PData.PShortDesc = Trim(value) ' short desc
frm3.apm3PShtDesc = Trim(value)
ElseIf name = "MEDDESC" Then
PData.PMedDesc = Trim(value) ' med desc
frm3.apm3PMedDesc = Trim(value)
ElseIf name = "VERSION" Then
PData.PVersion = Trim(value) ' prog version
frm3.apm3PVer = Trim(value)
ElseIf name = "ORIGDATE" Then
If IsDate(value) And value <> "1/1/1970" Then
PData.POrigDate = CDate(value)
frm3.apm3PODate = Trim(Str(Month(PData.POrigDate))) _
+ "/" _
+ Trim(Str(Day(PData.POrigDate))) _
+ "/" _
+ Trim(Str(Year(PData.POrigDate)))
Else
PData.POrigDate = CDate("1/1/70")
frm3.apm3PODate = ""
End If
ElseIf name = "CURDATE" Then
If IsDate(value) And value <> "1/1/1970" Then
PData.PCurRelease = CDate(value)
frm3.apm3PCDate = Trim(Str(Month(PData.PCurRelease))) _
+ "/" _
+ Trim(Str(Day(PData.PCurRelease))) _
+ "/" _
+ Trim(Str(Year(PData.PCurRelease)))
Else
PData.PCurRelease = CDate("1/1/70")
frm3.apm3PCDate = ""
End If
ElseIf name = "ZIP1" Then
PData.PZip1 = Trim(value) ' name of zip1
frm3.apm3PZip1 = Trim(value)
ElseIf name = "ZIP2" Then
PData.PZip2 = Trim(value) ' name of zip2
frm3.apm3PZip2 = Trim(value)
ElseIf name = "ZIP3" Then
PData.PZip3 = Trim(value) ' name of zip3
frm3.apm3PZip3 = Trim(value)
ElseIf name = "ZIP4" Then
PData.PZip4 = Trim(value) ' name of zip4
frm3.apm3PZip4 = Trim(value)
ElseIf name = "ZIP5" Then
PData.PZip5 = Trim(value) ' name of zip5
frm3.apm3PZip5 = Trim(value)
ElseIf name = "ZIP6" Then
PData.PZip6 = Trim(value) ' name of zip6
frm3.apm3PZip6 = Trim(value)
ElseIf name = "VEND1" Then
PData.PVend1 = Trim(value) ' name of vend1
frm3.apm3PVend1 = Trim(value)
ElseIf name = "VEND2" Then
PData.PVend2 = Trim(value) ' name of vend2
frm3.apm3PVend2 = Trim(value)
ElseIf name = "VEND3" Then
PData.PVend3 = Trim(value) ' name of vend3
frm3.apm3PVend3 = Trim(value)
ElseIf name = "VEND4" Then
PData.PVend4 = Trim(value) ' name of vend4
frm3.apm3PVend4 = Trim(value)
ElseIf name = "VEND5" Then
PData.PVend5 = Trim(value) ' name of vend5
frm3.apm3PVend5 = Trim(value)
ElseIf name = "VEND6" Then
PData.PVend6 = Trim(value) ' name of vend6
frm3.apm3PVend6 = Trim(value)
ElseIf name = "SCREEN" Then
PData.PScreen = Trim(value) ' name of screen file
frm3.apm3PScreen = Trim(value)
ElseIf name = "SIZE1" Then
PData.PSize1 = CSng(value) ' full size of zip1
frm3.apm3PSize1 = Trim(value)
ElseIf name = "SIZE2" Then
PData.PSize2 = CSng(value) ' full size of zip2
frm3.apm3PSize2 = Trim(value)
ElseIf name = "SIZE3" Then
PData.PSize3 = CSng(value) ' full size of zip3
frm3.apm3PSize3 = Trim(value)
ElseIf name = "SIZE4" Then
PData.PSize4 = CSng(value) ' full size of zip4
frm3.apm3PSize4 = Trim(value)
ElseIf name = "SIZE5" Then
PData.PSize5 = CSng(value) ' full size of zip5
frm3.apm3PSize5 = Trim(value)
ElseIf name = "SIZE6" Then
PData.PSize6 = CSng(value) ' full size of zip6
frm3.apm3PSize6 = Trim(value)
ElseIf name = "SSIZE" Then
PData.PScrSize = CSng(value) ' full size of screen file
frm3.apm3PScreenSize = Trim(value)
ElseIf name = "TEXTENV" Then
PData.PTextEnv = Trim(value) ' text environment
frm3.apm3PEnvText = Trim(value)
ElseIf name = "ENVDOS" Then
If Trim(UCase(value)) = "F" Then
PData.PEnvDOS = False ' DOS Env
frm3.apm3PEDOS = Unchecked
Else
PData.PEnvDOS = True ' DOS Env
frm3.apm3PEDOS = Checked
End If
ElseIf name = "ENVWIN" Then
If Trim(UCase(value)) = "F" Then
PData.PEnvWin = False ' Win Env
frm3.apm3PEWin = Unchecked
Else
PData.PEnvWin = True ' Win Env
frm3.apm3PEWin = Checked
End If
ElseIf name = "ENVWIN95" Then
If Trim(UCase(value)) = "F" Then
PData.PEnvWin95 = False ' W95 Env
frm3.apm3PEWin95 = Unchecked
Else
PData.PEnvWin95 = True ' W95 Env
frm3.apm3PEWin95 = Checked
End If
ElseIf name = "ENVOS2" Then
If Trim(UCase(value)) = "F" Then
PData.PEnvOS2 = False ' OS2 Env
frm3.apm3PEOS2 = Unchecked
Else
PData.PEnvOS2 = True ' OS2 Env
frm3.apm3PEOS2 = Checked
End If
ElseIf name = "ENVOTHER" Then
If Trim(UCase(value)) = "F" Then
PData.PEnvOther = False ' Other Env
frm3.apm3PEOther = Unchecked
Else
PData.PEnvOther = True ' Other Env
frm3.apm3PEOther = Checked
End If
ElseIf name = "CLASS1" Then
wkint1 = CInt(value)
clsptr = 0 ' catch pointer
For i = 0 To (NumClasses - 1)
wkint2 = CInt(Trim(Mid(Classes(i + 1), 1, 4)))
If wkint1 = wkint2 Then
clsptr = i
looper = False
End If
Next i
PData.PClass1 = wkint1
frm3.apm3Class1.ListIndex = clsptr
ElseIf name = "CLASS2" Then
wkint1 = CInt(value)
clsptr = 0 ' catch pointer
For i = 0 To (NumClasses - 1)
wkint2 = CInt(Trim(Mid(Classes(i + 1), 1, 4)))
If wkint1 = wkint2 Then
clsptr = i
looper = False
End If
Next i
PData.PClass2 = wkint1
frm3.apm3Class2.ListIndex = clsptr
ElseIf name = "CLASS3" Then
wkint1 = CInt(value)
clsptr = 0 ' catch pointer
For i = 0 To (NumClasses - 1)
wkint2 = CInt(Trim(Mid(Classes(i + 1), 1, 4)))
If wkint1 = wkint2 Then
clsptr = i
looper = False
End If
Next i
PData.PClass3 = wkint1
frm3.apm3Class3.ListIndex = clsptr
ElseIf name = "CLASS4" Then
wkint1 = CInt(value)
clsptr = 0 ' catch pointer
For i = 0 To (NumClasses - 1)
wkint2 = CInt(Trim(Mid(Classes(i + 1), 1, 4)))
If wkint1 = wkint2 Then
clsptr = i
looper = False
End If
Next i
PData.PClass4 = wkint1
frm3.apm3Class4.ListIndex = clsptr
ElseIf name = "MEMSIZE" Then
PData.PMemReq = CSng(value) ' memory required
frm3.apm3PMem = Trim(value)
ElseIf name = "HDREQ" Then
If Trim(value) = "F" Then
PData.PHdReq = False ' hard disk required?
frm3.apm3PHDReq = Unchecked
Else
PData.PHdReq = True ' hard disk required?
frm3.apm3PHDReq = Checked
End If
ElseIf name = "HDSIZE" Then
PData.PHdReqInM = CSng(value) ' hard disk in Mb
frm3.apm3PHDSize = Trim(value)
ElseIf Mid(name, 1, 6) = "FIDDIZ" Then
i = CInt(Mid(name, 7, Len(name) - 6))
If i > 0 And i < 11 Then
PData.PFileIdDiz(i) = Trim(value)
If i > PData.PFileIdDizLns Then
PData.PFileIdDizLns = i
End If
Else
MsgBox "Invalid line in FIDDIZ. Ignored"
End If
ElseIf Mid(name, 1, 4) = "LONG" Then
i = CInt(Mid(name, 5, Len(name) - 4))
If i > 0 And i < 151 Then
PData.PLongDesc(i) = Trim(value)
If i > PData.PLongDescLns Then
PData.PLongDescLns = i
End If
Else
MsgBox "Invalid line in LONG. Ignored"
End If
ElseIf Mid(name, 1, 4) = "KEYW" Then
i = CInt(Mid(name, 5, Len(name) - 4))
If i > 0 And i < 151 Then
PData.PKeyWords(i) = Trim(value)
If i > PData.PKeyWordsLns Then
PData.PKeyWordsLns = i
End If
Else
MsgBox "Invalid line in LONG. Ignored"
End If
ElseIf Mid(name, 1, 3) = "REG" Then
i = CInt(Mid(name, 4, Len(name) - 3))
If i > 0 And i < 151 Then
PData.PReg(i) = Trim(value)
If i > PData.PRegLns Then
PData.PRegLns = i
End If
Else
MsgBox "Invalid line in REG. Ignored"
End If
' frm3.apm3PRegistration.Text = ""
ElseIf Mid(name, 1, 4) = "INST" Then
i = CInt(Mid(name, 5, Len(name) - 4))
If i > 0 And i < 151 Then
PData.PInstall(i) = Trim(value)
If i > PData.PInstallLns Then
PData.PInstallLns = i
End If
Else
MsgBox "Invalid line in INST. Ignored"
End If
' frm3.apm3PInstall.Text = ""
ElseIf Mid(name, 1, 5) = "VINST" Then
i = CInt(Mid(name, 6, Len(name) - 5))
If i > 0 And i < 151 Then
PData.PVinst(i) = Trim(value)
If i > PData.PVinstLns Then
PData.PVinstLns = i
End If
Else
MsgBox "Invalid line in VINST. Ignored"
End If
' frm3.apm3PVInst.Text = ""
ElseIf Mid(name, 1, 4) = "PERM" Then
i = CInt(Mid(name, 5, Len(name) - 4))
If i > 0 And i < 151 Then
PData.PPermiss(i) = Trim(value)
If i > PData.PPermissLns Then
PData.PPermissLns = i
End If
Else
MsgBox "Invalid line in INST. Ignored"
End If
' frm3.apm3PPermiss.Text = ""
Else
MsgBox ("Unknown line in Program in file. Ignored")
End If
Wend
' after all read in - set rest of screen
frm3.apm3AuthNumber = Right(" " + Str(PData.PLink), 5)
frm3.apm3AuthName = ""
If Trim(AData.AFirstName) <> "" Then
frm3.apm3AuthName = frm3.apm3AuthName + Trim(AData.AFirstName) + " "
End If
If Trim(AData.ALastName) <> "" Then
frm3.apm3AuthName = frm3.apm3AuthName + Trim(AData.ALastName)
End If
If Trim(AData.ACompany) <> "" Then
frm3.apm3AuthName = Left(frm3.apm3AuthName + "/" + Trim(AData.ACompany), 40)
End If
PData.PMaintType = "U" ' set for big update
frm3.apm3RevAdd = False ' set screen
frm3.apm3RevMaint = False
frm3.apm3RevUpdate = True
frm3.apm3RevDelete = False
PData.PMaintDate = CDate("1/1/1970") ' date of this revision
frm3.apm3PRevDate = ""
PData.PMaintComt = Space(20) ' maint comment
frm3.apm3PRevReason = ""
' build FIDDIZ
If PData.PFileIdDizLns > 0 Then
frm3.apm3PFileidDiz.Text = PData.PFileIdDiz(1)
Else
frm3.apm3PFileidDiz.Text = ""
End If
If PData.PFileIdDizLns > 1 Then
For i = 2 To PData.PFileIdDizLns
frm3.apm3PFileidDiz.Text = frm3.apm3PFileidDiz.Text + _
Chr$(13) + Chr$(10) + PData.PFileIdDiz(i)
Next i
End If
' build LONG
If PData.PLongDescLns > 0 Then
frm3.apm3PLongDesc.Text = PData.PLongDesc(1)
Else
frm3.apm3PLongDesc.Text = ""
End If
If PData.PLongDescLns > 1 Then
For i = 2 To PData.PLongDescLns
frm3.apm3PLongDesc.Text = frm3.apm3PLongDesc.Text + _
Chr$(13) + Chr$(10) + PData.PLongDesc(i)
Next i
End If
'
' build KEYW
If PData.PKeyWordsLns > 0 Then
frm3.apm3PKeywords.Text = PData.PKeyWords(1)
Else
frm3.apm3PKeywords.Text = ""
End If
If PData.PKeyWordsLns > 1 Then
For i = 2 To PData.PKeyWordsLns
frm3.apm3PKeywords.Text = frm3.apm3PKeywords.Text + _
Chr$(13) + Chr$(10) + PData.PKeyWords(i)
Next i
End If
' build REG
If PData.PRegLns > 0 Then
frm3.apm3PRegistration.Text = PData.PReg(1)
Else
frm3.apm3PRegistration.Text = ""
End If
If PData.PRegLns > 1 Then
For i = 2 To PData.PRegLns
frm3.apm3PRegistration.Text = frm3.apm3PRegistration.Text + _
Chr$(13) + Chr$(10) + PData.PReg(i)
Next i
End If
'
' build INST
If PData.PInstallLns > 0 Then
frm3.apm3PInstall.Text = PData.PInstall(1)
Else
frm3.apm3PInstall.Text = ""
End If
If PData.PInstallLns > 1 Then
For i = 2 To PData.PInstallLns
frm3.apm3PInstall.Text = frm3.apm3PInstall.Text + _
Chr$(13) + Chr$(10) + PData.PInstall(i)
Next i
End If
'
' build VINST
If PData.PVinstLns > 0 Then
frm3.apm3PVInst.Text = PData.PVinst(1)
Else
frm3.apm3PVInst.Text = ""
End If
If PData.PVinstLns > 1 Then
For i = 2 To PData.PVinstLns
frm3.apm3PVInst.Text = frm3.apm3PVInst.Text + _
Chr$(13) + Chr$(10) + PData.PVinst(i)
Next i
End If
'
' build PERM
If PData.PPermissLns > 0 Then
frm3.apm3PPermiss.Text = PData.PPermiss(1)
Else
frm3.apm3PPermiss.Text = ""
End If
If PData.PPermissLns > 1 Then
For i = 2 To PData.PPermissLns
frm3.apm3PPermiss.Text = frm3.apm3PPermiss.Text + _
Chr$(13) + Chr$(10) + PData.PPermiss(i)
Next i
End If
'
End If ' outer loop - if exists
Close (prog_lun)
End Sub
'
' start up procedure
'
Sub main()
Dim cnt As Integer
Dim j As Integer
ClassLevel = 1 ' highest class level available
' use as program level default
AuthorFileIn = 0 ' not yet opened
Call GetAuthorFile ' initialize
frm1.Show
Call BuildClasses(ClassLevel, cnt)
For j = 1 To cnt
frm3.apm3Class1.AddItem Classes(j)
frm3.apm3Class2.AddItem Classes(j)
frm3.apm3Class3.AddItem Classes(j)
frm3.apm3Class4.AddItem Classes(j)
Next j
NumClasses = cnt
End Sub
'
' procedure to write the author information
' to the "author.jcs" file
'
Public Sub SaveAuthorFile()
Dim auth_lun As Integer ' logical lun for author file
Dim name As String
Dim value As String
auth_lun = FreeFile(0) ' get lun
Open CurDir + "\author.jcs" For Output As auth_lun
name = "LINK"
value = Right(" " + Str(AData.ALink), 5)
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "UPDATEDATE"
value = Trim(Str(Month(AData.AUpdateDate))) _
+ "/" _
+ Trim(Str(Day(AData.AUpdateDate))) _
+ "/" _
+ Trim(Str(Year(AData.AUpdateDate)))
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "UPDATEREASON"
value = AData.AUpDateReason
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "FIRSTNAME"
value = AData.AFirstName
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "LASTNAME"
value = AData.ALastName
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "COMPANY"
value = AData.ACompany
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ADDRESS1"
value = AData.AAddress1
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ADDRESS2"
value = AData.AAddress2
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CITY"
value = AData.ACity
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "STATE"
value = AData.AState
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP"
value = AData.AZip
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "COUNTRY"
value = AData.ACountry
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "COUNTRYCODE"
value = AData.ACountryCode
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "TELEPHONE"
value = AData.ATelephone
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "FAX"
value = AData.AFax
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "BBS"
value = AData.ABBS
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CIS"
value = AData.ACIS
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "EMAIL"
value = AData.AINetEMail
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "URL"
value = AData.AURL
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ASP"
If AData.AASP = True Then
value = "T"
Else
value = "F"
End If
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "STAR"
If AData.ASTAR = True Then
value = "T"
Else
value = "F"
End If
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ESC"
If AData.AESC = True Then
value = "T"
Else
value = "F"
End If
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ORG4"
If AData.AORG4 = True Then
value = "T"
Else
value = "F"
End If
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ORG5"
If AData.AORG5 = True Then
value = "T"
Else
value = "F"
End If
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "BESTAPPROVE"
If AData.ABestApprove = True Then
value = "T"
Else
value = "F"
End If
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "APROVDATE"
value = Trim(Str(Month(AData.AAprovDate))) _
+ "/" _
+ Trim(Str(Day(AData.AAprovDate))) _
+ "/" _
+ Trim(Str(Year(AData.AAprovDate)))
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "APROVCOMT"
value = AData.AAprovComt
Print #auth_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Close (auth_lun) ' done with it for now
AuthorFileIn = 2 ' set as available!
End Sub
'
' Routine to save what is in the current
' program area
'
'
Public Sub SaveProgFile()
Dim prog_lun As Integer ' logical lun for program file
Dim name As String
Dim value As String
Dim i As Integer
Dim tst As Integer
If ProgFileIn = 0 Then
MsgBox "cannot. Program not read, or name not established"
GoTo EndOfSub
End If
If ProgFileIn = 1 Then
tst = MsgBox("About to add New Program Description File. Continue? ", vbYesNo)
If tst <> vbYes Then
GoTo EndOfSub
End If
End If
prog_lun = FreeFile(0) ' get lun
Open CurDir + "\" + Trim(PData.PProg) + ".jcs" For Output As prog_lun
name = "PLINK"
value = Trim(Str(PData.PLink))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CLASSLEVEL"
value = Trim(Str(PData.PClassLevel))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "PROGRAM"
value = Left(PData.PProg + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "MAINTTYPE"
value = PData.PMaintType
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "MAINTDATE" ' ***********
value = Trim(Str(Month(PData.PMaintDate))) _
+ "/" _
+ Trim(Str(Day(PData.PMaintDate))) _
+ "/" _
+ Trim(Str(Year(PData.PMaintDate)))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "MAINTCOMMENT" ' **********
value = Left(PData.PMaintComt + Space(20), 20)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SHORTDESC"
value = Left(PData.PShortDesc + Space(20), 20)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "MEDDESC"
value = Left(PData.PMedDesc + Space(40), 40)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VERSION"
value = Left(PData.PVersion + Space(10), 10)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ORIGDATE"
value = Trim(Str(Month(PData.POrigDate))) _
+ "/" _
+ Trim(Str(Day(PData.POrigDate))) _
+ "/" _
+ Trim(Str(Year(PData.POrigDate)))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CURDATE"
value = Trim(Str(Month(PData.PCurRelease))) _
+ "/" _
+ Trim(Str(Day(PData.PCurRelease))) _
+ "/" _
+ Trim(Str(Year(PData.PCurRelease)))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP1"
value = Left(PData.PZip1 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP2"
value = Left(PData.PZip2 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP3"
value = Left(PData.PZip3 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP4"
value = Left(PData.PZip4 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP5"
value = Left(PData.PZip5 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ZIP6"
value = Left(PData.PZip6 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VEND1"
value = Left(PData.PVend1 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VEND2"
value = Left(PData.PVend2 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VEND3"
value = Left(PData.PVend3 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VEND4"
value = Left(PData.PVend4 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VEND5"
value = Left(PData.PVend5 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "VEND6"
value = Left(PData.PVend6 + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SCREEN"
value = Left(PData.PScreen + Space(8), 8)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SIZE1"
value = Trim(Str(PData.PSize1))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SIZE2"
value = Trim(Str(PData.PSize2))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SIZE3"
value = Trim(Str(PData.PSize3))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SIZE4"
value = Trim(Str(PData.PSize4))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SIZE5"
value = Trim(Str(PData.PSize5))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SIZE6"
value = Trim(Str(PData.PSize6))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "SSIZE"
value = Trim(Str(PData.PScrSize))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "TEXTENV"
value = Left(PData.PTextEnv + Space(15), 15)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ENVDOS"
If PData.PEnvDOS = True Then
value = "T"
Else
value = "F"
End If
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ENVWIN"
If PData.PEnvWin = True Then
value = "T"
Else
value = "F"
End If
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ENVWIN95"
If PData.PEnvWin95 = True Then
value = "T"
Else
value = "F"
End If
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ENVOS2"
If PData.PEnvOS2 = True Then
value = "T"
Else
value = "F"
End If
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "ENVOTHER"
If PData.PEnvOther = True Then
value = "T"
Else
value = "F"
End If
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CLASS1"
value = Mid(Classes(PData.PClass1 + 1), 1, 4)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CLASS2"
value = Mid(Classes(PData.PClass2 + 1), 1, 4)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CLASS3"
value = Mid(Classes(PData.PClass3 + 1), 1, 4)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "CLASS4"
value = Mid(Classes(PData.PClass4 + 1), 1, 4)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "MEMSIZE"
value = Trim(Str(PData.PMemReq))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "HDREQ"
If PData.PHdReq = True Then
value = "T"
Else
value = "F"
End If
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
name = "HDSIZE"
value = Trim(Str(PData.PHdReqInM))
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
For i = 1 To PData.PFileIdDizLns
name = "FIDDIZ" + Trim(Str(i))
value = PData.PFileIdDiz(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
For i = 1 To PData.PLongDescLns
name = "LONG" + Trim(Str(i))
value = PData.PLongDesc(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
For i = 1 To PData.PKeyWordsLns
name = "KEYW" + Trim(Str(i))
value = PData.PKeyWords(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
For i = 1 To PData.PRegLns
name = "REG" + Trim(Str(i))
value = PData.PReg(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
For i = 1 To PData.PInstallLns
name = "INST" + Trim(Str(i))
value = PData.PInstall(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
For i = 1 To PData.PVinstLns
name = "VINST" + Trim(Str(i))
value = PData.PVinst(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
For i = 1 To PData.PPermissLns
name = "PERM" + Trim(Str(i))
value = PData.PPermiss(i)
Print #prog_lun, Chr(34); name; Chr(34); ","; Chr(34); value; Chr(34)
Next i
Close (prog_lun)
EndOfSub:
End Sub
'
'
' keep the inputted values in working storage
'
'
Public Sub TakeAuthorScreen()
If IsNumeric(frm2.apm2ANumber) Then
AData.ALink = CLng(frm2.apm2ANumber) ' initialize fields
Else
MsgBox ("invalid link number - cannot")
End If
If IsDate(frm2.apm2AIDate) Then
AData.AUpdateDate = CDate(frm2.apm2AIDate)
Else
AData.AUpdateDate = CDate("1/1/70")
End If
AData.AUpDateReason = Left(frm2.apm2AUReason + Space(20), 20)
AData.AFirstName = Left(frm2.apm2AFirstName + Space(20), 20)
AData.ALastName = Left(frm2.apm2ALastName + Space(20), 20)
AData.ACompany = Left(frm2.apm2ACompany + Space(30), 30)
AData.AAddress1 = Left(frm2.apm2AAddr1 + Space(30), 30)
AData.AAddress2 = Left(frm2.apm2AAddr2 + Space(30), 30)
AData.ACity = Left(frm2.apm2ACity + Space(20), 20)
AData.AState = Left(frm2.apm2AState + " ", 2)
AData.AZip = Left(frm2.apm2AZip + Space(15), 15)
AData.ACountry = Left(frm2.apm2ACountry + Space(20), 20)
AData.ACountryCode = Left(frm2.apm2ACountryCode + " ", 1)
AData.ATelephone = Left(frm2.apm2ATelephone + Space(20), 20)
AData.AFax = Left(frm2.apm2AFax + Space(20), 20)
AData.ABBS = Left(frm2.apm2ABBS + Space(20), 20)
AData.ACIS = Left(frm2.apm2ACIS + Space(20), 20)
AData.AINetEMail = Left(frm2.apm2AIEMail + Space(50), 50)
AData.AURL = Left(frm2.apm2AURL + Space(80), 80)
If frm2.apm2AASP = Checked Then
AData.AASP = True
Else
AData.AASP = False
End If
If frm2.apm2ASTAR = Checked Then
AData.ASTAR = True
Else
AData.ASTAR = False
End If
If frm2.apm2AESC = Checked Then
AData.AESC = True
Else
AData.AESC = False
End If
If frm2.apm2AORG4 = Checked Then
AData.AORG4 = True
Else
AData.AORG4 = False
End If
If frm2.apm2AORG5 = Checked Then
AData.AORG5 = True
Else
AData.AORG5 = False
End If
If frm2.apm2ABestApp = Checked Then
AData.ABestApprove = True
Else
AData.ABestApprove = False
End If
If IsDate(frm2.apm2ABestAppDate) Then
AData.AAprovDate = CDate(frm2.apm2ABestAppDate)
Else
AData.AAprovDate = CDate("1/1/70")
End If
AData.AAprovComt = Left(frm2.apm2ABestAppCmt + Space(20), 20)
End Sub
'
' Subroutine to accept the screen values into
' the program w/s areas
'
'
Public Sub TakeProgScreen()
Dim TmpLnCnt As Integer ' work areas for subroutine
Dim TmpLn(150) As String
PData.PLink = CLng(frm3.apm3AuthNumber) ' initialize fields
PData.PClassLevel = 1
PData.PProg = Trim(frm3.apm3Prog) ' Program (Master key & file name)
If Trim(PData.PProg) <> "" Then
If ProgFileIn = 0 Then
ProgFileIn = 1
End If
Else
ProgFileIn = 0
End If
If frm3.apm3RevAdd = True Then
PData.PMaintType = "A" ' Set for Add if new
ElseIf frm3.apm3RevMaint = True Then
PData.PMaintType = "M" ' Set for Add if new
ElseIf frm3.apm3RevUpdate = True Then
PData.PMaintType = "M" ' Set for Add if new
Else
PData.PMaintType = "D" ' Set for Add if new
End If
If IsDate(frm3.apm3PRevDate) Then
PData.PMaintDate = CDate(frm3.apm3PRevDate)
Else
PData.PMaintDate = CDate("1/1/70")
End If
PData.PMaintComt = Left(frm3.apm3PRevReason + Space(20), 20)
PData.PShortDesc = Left(frm3.apm3PShtDesc _
+ Space(20), 20)
PData.PMedDesc = Left(frm3.apm3PMedDesc _
+ Space(40), 40)
PData.PVersion = Left(frm3.apm3PVer _
+ Space(10), 10)
If IsDate(frm3.apm3PODate) Then
PData.POrigDate = CDate(frm3.apm3PODate)
Else
PData.POrigDate = CDate("1/1/70")
End If
If IsDate(frm3.apm3PCDate) Then
PData.PCurRelease = CDate(frm3.apm3PCDate)
Else
PData.PCurRelease = CDate("1/1/70")
End If
PData.PZip1 = Left(frm3.apm3PZip1 + Space(8), 8)
PData.PZip2 = Left(frm3.apm3PZip2 + Space(8), 8)
PData.PZip3 = Left(frm3.apm3PZip3 + Space(8), 8)
PData.PZip4 = Left(frm3.apm3PZip4 + Space(8), 8)
PData.PZip5 = Left(frm3.apm3PZip5 + Space(8), 8)
PData.PZip6 = Left(frm3.apm3PZip6 + Space(8), 8)
PData.PVend1 = Left(frm3.apm3PVend1 + Space(8), 8)
PData.PVend2 = Left(frm3.apm3PVend2 + Space(8), 8)
PData.PVend3 = Left(frm3.apm3PVend3 + Space(8), 8)
PData.PVend4 = Left(frm3.apm3PVend4 + Space(8), 8)
PData.PVend5 = Left(frm3.apm3PVend5 + Space(8), 8)
PData.PVend6 = Left(frm3.apm3PVend6 + Space(8), 8)
PData.PScreen = Left(frm3.apm3PScreen + Space(8), 8)
PData.PSize1 = 0
If (frm3.apm3PSize1 <> "") Then
PData.PSize1 = CSng(frm3.apm3PSize1)
End If
PData.PSize2 = 0
If (frm3.apm3PSize2 <> "") Then
PData.PSize2 = CSng(frm3.apm3PSize2)
End If
PData.PSize3 = 0
If (frm3.apm3PSize3 <> "") Then
PData.PSize3 = CSng(frm3.apm3PSize3)
End If
PData.PSize4 = 0
If (frm3.apm3PSize4 <> "") Then
PData.PSize4 = CSng(frm3.apm3PSize4)
End If
PData.PSize5 = 0
If (frm3.apm3PSize5 <> "") Then
PData.PSize5 = CSng(frm3.apm3PSize5)
End If
PData.PSize6 = 0
If (frm3.apm3PSize6 <> "") Then
PData.PSize6 = CSng(frm3.apm3PSize6)
End If
PData.PScrSize = 0
If (frm3.apm3PScreenSize <> "") Then
PData.PScrSize = CSng(frm3.apm3PScreenSize)
End If
PData.PTextEnv = Left(frm3.apm3PEnvText + Space(15), 15)
If frm3.apm3PEDOS = Unchecked Then
PData.PEnvDOS = False
Else
PData.PEnvDOS = True
End If
If frm3.apm3PEWin = Unchecked Then
PData.PEnvWin = False
Else
PData.PEnvWin = True
End If
If frm3.apm3PEWin95 = Unchecked Then
PData.PEnvWin95 = False
Else
PData.PEnvWin95 = True
End If
If frm3.apm3PEOS2 = Unchecked Then
PData.PEnvOS2 = False
Else
PData.PEnvOS2 = True
End If
If frm3.apm3PEOther = Unchecked Then
PData.PEnvOther = False
Else
PData.PEnvOther = True
End If
PData.PClass1 = frm3.apm3Class1.ListIndex
PData.PClass2 = frm3.apm3Class2.ListIndex
PData.PClass3 = frm3.apm3Class3.ListIndex
PData.PClass4 = frm3.apm3Class4.ListIndex
PData.PMemReq = 0 ' memory required
If frm3.apm3PMem <> "" Then
PData.PMemReq = CSng(Trim(frm3.apm3PMem)) ' memory required
End If
PData.PHdReq = frm3.apm3PHDReq ' hard disk required?
PData.PHdReqInM = 0 ' hard disk in Mb
If frm3.apm3PHDSize <> "" Then
PData.PHdReqInM = CSng(frm3.apm3PHDSize) ' hard disk in Mb
End If
' FIDDIZ
Call BreakOutMemo(frm3.apm3PFileidDiz.Text, _
PData.PFileIdDiz, _
PData.PFileIdDizLns, _
45)
' LONG
Call BreakOutMemo(frm3.apm3PLongDesc.Text, _
PData.PLongDesc, _
PData.PLongDescLns, _
70)
' KEYW
Call BreakOutMemo(frm3.apm3PKeywords.Text, _
PData.PKeyWords, _
PData.PKeyWordsLns, _
70)
' REG
Call BreakOutMemo(frm3.apm3PRegistration.Text, _
PData.PReg, _
PData.PRegLns, _
70)
' INST
Call BreakOutMemo(frm3.apm3PInstall.Text, _
PData.PInstall, _
PData.PInstallLns, _
70)
' VINST
Call BreakOutMemo(frm3.apm3PVInst.Text, _
PData.PVinst, _
PData.PVinstLns, _
70)
' Permissions
Call BreakOutMemo(frm3.apm3PPermiss.Text, _
PData.PPermiss, _
PData.PPermissLns, _
70)
End Sub